/*
 * $Id: QEADIFFileMaker.h 86 2009-07-14 02:52:39Z jon@bway.net $
 * Chalk
 *
 * Created 6/7/09
 * Copyright Jon Gordon
 * 
 * Permission is hereby granted, free of charge, to any person obtaining 
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including 
 * without limitation the rights to use, copy, modify, merge, publish, 
 * distribute, sublicense, and/or sell copies of the Software, and to 
 * permit persons to whom the Software is furnished to do so, subject to 
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#import <Foundation/Foundation.h>

@class QEADIFElement;
@class QEADIFFile;

@interface QEADIFFileMaker : NSObject {
@private
    BOOL hasHeader, inHeader;
    BOOL isLoTW;
    
    NSArray *elements;
    NSEnumerator *ee;
    QEADIFElement *element;
    
    NSMutableSet *headerOnlyFieldsSeen;
    
    NSMutableArray *tmpHeaders;
    NSMutableArray *tmpRecords;
    NSMutableDictionary *tmpRecord;
    NSMutableArray *tmpErrors;
}

@property (nonatomic, retain) NSArray *elements;

+ (QEADIFFile *)makeADIFFileFromSource:(NSString *)source;
+ (QEADIFFile *)makeADIFFileFromFile:(NSString *)filename error:(NSError **)outError;
+ (NSDictionary *)makeADIFRecordFromSource:(NSString *)source;
- (QEADIFFile *)makeFile;

@end
